package com.xizi.cglib;

import org.springframework.cglib.proxy.Callback;
import org.springframework.cglib.proxy.MethodProxy;

/*
    自定义 MethodInterceptor 并重写 intercept 方法
 */
public interface MethodInterceptor extends Callback {

    /**
     * 拦截被代理类中的方法
     *
     * @param obj    被代理的对象（需要增强的对象）
     * @param method 被拦截的方法（需要增强的方法）
     * @param args   方法入参
     * @param proxy  用于调用原始方法
     * @return
     * @throws Throwable
     */
    public Object intercept(Object obj, java.lang.reflect.Method method, Object[] args,
                            MethodProxy proxy) throws Throwable;
}
